package com.smartinput.device.query.service

import com.smartinput.device.query.dao.DeviceDao
import com.smartinput.device.query.data.DeviceEntry
import org.springframework.stereotype.Service


@Service
class DeviceQueryService(
    private val deviceDao: DeviceDao
) {

    /**
     * 根据设备ID查询设备
     */
    fun findByDeviceId(deviceId: String): DeviceEntry? {
        return deviceDao.findByDeviceId(deviceId)
    }

    /**
     * 根据用户ID查询设备列表
     */
    fun findByUserId(userId: String): List<DeviceEntry> {
        return deviceDao.findByUserId(userId)
    }

    /**
     * 查询匿名设备（userId为null的设备）
     */
    fun findAnonymousDevices(): List<DeviceEntry> {
        return deviceDao.findByUserIdIsNull()
    }

    /**
     * 根据用户ID查询在线设备
     */
    fun findOnlineDevicesByUserId(userId: String): List<DeviceEntry> {
        return deviceDao.findByUserIdAndOnline(userId, true)
    }

    /**
     * 查询在线匿名设备
     */
    fun findOnlineAnonymousDevices(): List<DeviceEntry> {
        return deviceDao.findByUserIdIsNullAndOnline(true)
    }

    /**
     * 根据Socket ID查询设备
     */
    fun findBySocketId(socketId: String): DeviceEntry? {
        return deviceDao.findBySocketId(socketId)
    }

    /**
     * 查询所有在线设备
     */
    fun findAllOnlineDevices(): List<DeviceEntry> {
        return deviceDao.findByOnline(true)
    }

    /**
     * 检查设备ID是否存在
     */
    fun existsByDeviceId(deviceId: String): Boolean {
        return deviceDao.existsByDeviceId(deviceId)
    }

}